package com.jcyang.eshop.auth.composite;

import com.jcyang.eshop.auth.visitor.PriorityNodeVisitor;
import lombok.Data;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 权限树节点
 *
 * @author jcyang
 */
@Data
public class PriorityNode {

    /**
     * id
     */
    private Long id;
    /**
     * 权限编号
     */
    private String code;
    /**
     * 权限URL
     */
    private String url;
    /**
     * 权限备注
     */
    private String priorityComment;
    /**
     * 权限类型
     */
    private Integer priorityType;
    /**
     * 父权限id
     */
    private Long parentId;
    /**
     * 权限的创建时间
     */
    private Date gmtCreate;
    /**
     * 权限的修改时间
     */
    private Date gmtModified;
    /**
     * 子权限节点
     */
    private List<PriorityNode> children = new ArrayList<>();

    /**
     * 接收一个权限树访问者
     *
     * @param visitor 权限树访问者
     */
    public void accept(PriorityNodeVisitor visitor) {
        visitor.visit(this);
    }
}
